With the advent of the Internet, an application was created known as a “web browser”. In this context, a “web browser” includes an application for retrieving, presenting, and traversing information resources on the World Wide Web or, more generally, the Internet. An information resource is generally identified by a Uniform Resource Identifier (URI) or a Uniform Resource Locator (URL) and may be a web page, image, video, or other piece of content. A web browser generally is executed by a processor and interacts with an underlying operating system as most traditional or native applications do.
Traditionally, a web browser may access a web site or a collection of web pages, scripts, etc. from a physically remote server or web server. The more advanced web sites may include active content (e.g., client-side scripts, server-side scripts, etc.) which allow content of information to be dynamically changed or asynchronously accessed. In general, these web sites would be loaded, processed, or displayed by a web browser without the installation of any permanent portion of the web site on the user's computer, although the web site may require the installation of a web-site agnostic third-party execution tool (e.g., Adobe Flash, Java Virtual Machine, etc.) or an individualized data file (e.g., a web cookie, etc.). However, in general, a user and web browser may traditionally browse and leave a traditional web site without substantial alteration or installation of the web site being stored on the user's local computing device
Traditionally, computing has involved the use of native applications or computer software designed to help a user complete a single task or multiple tasks. Traditionally, these native applications have been executed locally by a processor or computing device either directly by the processor or with the mediation or assistance of an operating system (OS). In general an operating system is a piece of software that provides a common set of services to aid the execution of a host of applications and, more importantly, provides a low-level interface for the hardware of the computer and manages hardware functions such as input and output, memory allocation etc. Generally, the operating system acts as an intermediary between application programs and the computer hardware, although the application code is usually executed directly by the hardware and will frequently call the OS or be interrupted by it. Frequently, the OS is represented as being “between” the hardware and the applications.
Traditionally, a computing device may only execute one OS at a time. If a user wished to switch from a first operating system (e.g., Microsoft's WINDOWS) to a second operating system (e.g., Apple's OS X), the user would be required to turn off and turn the computing device back on (or reboot the computing device), and inform the computing device that it was to execute the second operating system. As operating systems generally use completely different sets of services to aid the execution of a host of applications and often use completely different file systems, there is generally a complete partitioning between different operating systems.
As such, when a user wished to switch from a first OS to a second OS, generally all of the applications executed in the first OS would have to cease execution and all unsaved data or working information associated with those applications would be lost. When the second OS was executed, a user wishing to resume their work would be unable to do so seamlessly as they did not have access to the unsaved data or working information associated with the applications that had been executed by the first OS. In fact, due to Operating Systems providing different sets of services to aid the execution of a host of applications, the applications executed by each OS generally were tailored to that OS and would not execute on another OS.
Frequently, this strict partitioning remains even when a virtual machine is executed by a host computing device or operating system. The guest or second OS executed by the virtual machine is unable to share data with the host or first OS or its applications. As such, the ability to seamlessly share data (e.g., unsaved data or working variables, etc.) between applications executing on different Operating Systems is generally not possible.